perm filename INTFAC.FAI[SYS,HE]2 blob sn#025717 filedate 1973-02-22 generic text, type T, neo UTF8
00100		TITLE INTFAC
00200		INTERNAL DOIT,ARMPOS,ARM.JOINT
00300		INTERNAL HANDFN,ARMFN,ARMPROCEED
00400		EXTERNAL ARM.VECTOR,ARM.MOTION,ARM.STATUS,ARM.SEG
00500		EXTERNAL ARM.WAIT,FELT,STOP.ON,ARM.TO
00600		EXTERNAL ARM.MESSAGE
00700	
00800		P←17
00900		MASTER←←16657
01000		RELOC←←40
01100		TOUCH←←10
01200		HOLD←←20
01300	
01400	ARM.JOINT:MOVEI 
01500		SKIPA
01600	ARMPOS:	MOVEI 1
01700		HRLI MASTER
01800		MOVEM EXE
01900		CALLI 1,30
02000		MOVEM 1,SEGJOB
02100		JSR ISSERV
02200	SEN1:	SEND REQU
02300		JRST[		MOVEI 1,2
02400				CALLI 1,31
02500				JRST SEN1]
02600		WRCV EXE
02700		MOVE 1,ARM.VE
02800		MOVEI 2,6(1)
02900		HRLI 1,THETA
03000		BLT 1,(2)
03100		MOVE 1,STATUS
03150		MOVEM 1,ARM.STATUS
03200	RETN:	POPJ 17,
03300	
03400	REQU:	SIXBIT/*ARM*/
03500		EXE
03600	
     

00100	;	THIS IS THE 32 WORD MAIL MESSAGE
00200	
00300	EXE:	XWD MASTER,0	;18-27 NARGS, 30 RELOC, 31 HOLD, 32 SOTCH, 33-35 EXE
00400				;0 READ IN OCTAL
00500				;1 READ IN DECIMAL
00600				;2 EXECUTE FILE
00700				;3 EXECUTE FUNCTION
00800	FILE:	0
00900	PPPN:	0
01000	BAND:	0
01100	SEGJOB:	0
01200	NAME:	0
01300	STATUS:	0
01400	SEGMENT:0
01500	NERVES:	0
01600	ETOR:	0
01700	THETA:	0
01800	ARGS:	BLOCK =21
01900	
     

00100	ISSERV:	0
00200	SEE:	MOVE 1,[SIXBIT/*ARM*/]
00300		CALLI 1,400043
00400		JRST[	CAIE 1,1
00500			JRST[	OUTSTR[ASCIZ/THERE ARE TOO MANY SERVOS ALREADY
00600	PLEASE KILL THEM ALL BUT ONE AND TYPE RET
00700	/]
00800				INCHWL
00900				INCHWL
01000				JRST SEE]
01100			PTYGET 10
01200			JRST[	OUTSTR[ASCIZ/NO PTYS AVAILABLE
01300	/]
01400				CALLI 12]
01500			HRLI 10,0
01600			MOVEI 11,[ASCIZ/L
01700	/]
01800			PTWRS7 10
01900		WH:	PTRD1W 10
02000			CAIE 11,"#"
02100			JRST WH
02200			MOVEI 11,[ASCIZ/H,LOU
02300	/]
02400			PTWRS7 10
02500		WCC:	PTRD1W 10
02600			CAIE 11,"↑"
02700			JRST WCC
02800			MOVEI 11,[ASCIZ/RUN ARM
02900	/]
03000			PTWRS7 10
03100		WCC2:	PTRD1W 10
03200			CAIE 11,"!"
03300			JRST WCC2
03400			JRST @ISSERV]
03500	GOTONE:	JRST @ISSERV
03600	
     

00100	DOIT:	MOVE 1,-1(17)
00200		MOVEM 1,FILE
00300		MOVEM 1,ARM.WAIT
00400		MOVE 1,-2(17)
00500		HRRZM 1,BAND
00600		MOVEI 2
00700		SETZ 1,
00800		CALLI 1,24
00900		MOVEM 1,PPPN
01000		JSR ISSERV
01100		PUSHJ P,ACT
01200	RETM:	SUB 17,[XWD 3,3]
01300		JRST @3(17)
01400	
01500	ARMFN:	MOVEI 3+HOLD+RELOC
01600		HRL 1,ARM.ME
01700		HRRI 1,ARGS
01800		BLT 1,ARGS+24
01900		MOVE 1,-1(17)
02000		DPB 1,[POINT 9,0,26]
02100		PUSHJ P,ACT
02200		SUB P,[XWD 2,2]
02300		JRST @2(P)
02400	
02500	HANDFN:	MOVEI 3+HOLD
02600		MOVE 1,ARM.ME
02700		MOVE 1,(1)
02800		MOVEM 1,ARGS
02900		JRST ACT
03000	
03100	ARMPRO:	MOVE 1,-1(P)
03200		MOVEM 1,ARGS
03300		MOVEI 3
03400		PUSHJ P,ACT
03500		SUB P,[XWD 2,2]
03600		JRST @2(P)
03700	
     

00100	ACT:	HRLI MASTER
00200		SETZM ARM.STATUS
00300		SKIPE STOP.ON
00400		TRO TOUCH
00500		MOVEM EXE
00600		MOVE 1,ARM.WAIT
00700		MOVEM 1,ARM.MOTION
00800		SETZM ARM.WAIT
00900		SEND REQU
01000		JRST[		MOVEI 1,2
01100				CALLI 1,31
01200				JRST .-1]
01300		WRCV EXE
01400		MOVE 1,ARM.VE
01500		MOVEI 2,6(1)
01600		HRLI 1,THETA
01700		BLT 1,(2)
01800		MOVE 1,ARM.TO
01900		MOVEI 2,5(1)
02000		HRLI 1,ARGS+10
02100		BLT 1,(2)
02200		MOVE 1,ARM.MOTION
02300		MOVEM 1,ARM.WAIT
02400		SETZM ARM.MOTION
02500		MOVE 1,STATUS
02600		MOVEM 1,ARM.STATUS
02700		POPJ P,
02800	
02900		END